<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    </head>
    <body>
        <h1>666</h1>
        <script>
            // map()为操作数组的一种方法，官方文档显示：

            // map() 方法返回一个新数组，数组中的元素为原始数组元素调用函数处理后的值。

            // map() 方法按照原始数组元素顺序依次处理元素。

            // 注意： map() 不会对空数组进行检测。

            // 注意： map() 不会改变原始数组。

            // 但是我在实践中却发现事实并非如此。
            // 原文链接：https://blog.csdn.net/Anna0115/article/details/103696124

            // let array = [1, 2, 3, 4, 5];
            // let newArray = array.map((item, index) => {
                // array[index] = array[index] * 10;
                // item = item * 10;
                // return item * 2;
            // });
            // let newArray = array.forEach((item, index) => {
            //     array[index] = array[index] * 10;
            //     // item = item * 10;
            //     // return item * 2;
            // });
            // console.log(array); // [1,2,3,4,5]
            // console.log(newArray); //[2, 4, 6, 8, 10]

            // 当数组为引用类型时原数组发生改变
            let array = [
                { name: 'Anna', age: 16 },
                { name: 'James', age: 18 },
            ];
            let newArray = array.map((item, index, cc, dd) => {
                console.log(item, index, cc, dd);
                item.like = 'eat';
                return item;
            });
            console.log(array); // [{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]
            console.log(newArray); //[{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]

            // let array1 = [
            //     { name: 'Anna', age: 16 },
            //     { name: 'James', age: 18 },
            // ];
            // let array2 = [1, 2, 3];
            // // console.log(array2.map(() => {}));
            // array2.map((item, index, cc, dd) => {
            //     console.log(item, index, cc, dd);
            //     item = 'eat';
            // });
            // console.log(array2); //[{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]

            // 避免原数组发生改变
            // let array = [
            //     { name: 'Anna', age: 16 },
            //     { name: 'James', age: 18 },
            // ];
            // let newArray = array.map((item) => {
            //     const obj = { ...item, like: 'eat' };
            //     return obj;
            // });
            // console.log(array); // [{ name: 'Anna', age: 16},{ name: 'James', age: 18}]
            // console.log(newArray); //[{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]
            // 原文链接：https://blog.csdn.net/Anna0115/article/details/103696124
        </script>
    </body>
</html>
